#ifndef VECTOR_H
#define VECTOR_H
#include "Includes.h"

struct Vector2
{
public:
	Vector2();
	Vector2(float x, float y);
	~Vector2();

	Vector2 operator + (Vector2 right);
	Vector2 operator - (Vector2 right);
	void operator += (Vector2 right);
	void operator -= (Vector2 right);
	void operator *= (float right);
	void operator /= (float right);
	Vector2 operator * (float right);
	Vector2 operator * (Vector2 right);
	Vector2 operator / (float right);
	void Normalize();

	float x;
	float y;
};
struct Vector3
{
public:
    Vector3();
    Vector3(float x, float y, float z);
    ~Vector3();

    Vector3 operator + (Vector3 right);
    Vector3 operator - (Vector3 right);
	Vector3 operator - ();
    void operator += (Vector3 right);
    void operator -= (Vector3 right);
    void operator *= (float right);
    void operator /= (float right);
    void operator  = (Vector3 right);
    Vector3 operator * (float right);
	Vector3 operator * (Vector3 right);
    Vector3 operator / (float right);

	void Normalize();
	float Length();
	static Vector3 Cross(Vector3 v1, Vector3 v2);
	static float   Dot(Vector3 v1, Vector3 v2);
	static Vector3 Power(Vector3 v, float exp);

    float x;
    float y;
    float z;
};

#endif // VECTOR_H
